This relates generally to graphics processors.
Graphics processors are generally responsible for generating the displays that appear in computer systems. Each graphics processor core may include a number of different resources that perform different types of operations. For example a graphics core may include fixed function logic that implements the stages of a DirectX (DX) or other rendering pipeline, texture samplers that process textures, execution units that perform arithmetic and math operations, pixel back-ends that perform pixel fill and blend operations, etc.
Workloads that execute on a graphics core vary in their characteristics and may stress different resources available in the graphics core to different degrees, creating performance bottlenecks arising because of overloading of one resource relative to other resources. For example some workloads may be texture intensive and they create a performance bottleneck in the texture samplers. Other workloads may require intensive math operations creating a performance bottleneck in the execution units.
Furthermore the characteristics of a particular workload may change over time leading to performance bottlenecks that move dynamically from one resource to another.